package 集合;

import java.util.*;

/**
 * @ClassName : IteratorText
 * @Author : LV88VL
 * @Date: 2021/3/10 17:26
 * @Description : Iterator接口======>
 *                          获得具体容器的迭代器=======>
 *                          从而进行数据遍历和获取
 *                        ***************************************
 *                         ListIterator接口======>继承于List,能够完成List的增上改查操作
 */
public class IteratorText {
    public static void main(String[] args) {
        //集合的获取方式。
        //1.。创建集合对象。

        Collection coll =new ArrayList();
        List list = new ArrayList();
        coll.add("3132");
        coll.add("546");
        coll.add("7987");
        coll.add("7174");
        list.add("3132");
        list.add("546");
        list.add("7987");
        list.add("7174");
        /**
        //2.。获取容器的迭代器对象，通过Iterator方法
        Iterator it = coll.iterator();
        //3.。使用具体的迭代器对象获取集合中的元素,看迭代器的方法
        while (it.hasNext()){
            System.out.println(it.next());
        }
        */
        /**
        //*********************************************************
        //快捷生成  itco
        Iterator it = coll.iterator();
        it.next();
        it.remove();
        for (;it.hasNext(); ) {
            Object i = it.next();
            System.out.println(i);
        }
        //********************************************************
        */
        // 做插入元素的操作
        /**
         *      引发ConcurrentModificationException错误
         *      在迭代过程中，使用了集合的方法对元素进行操作，导致迭代器不知道集合的变化
         *      引发数据的不确定性
         *
         *      解决：在迭代时不要使用集合的方法解决
         *      使用Iterator的子接口****ListIterator****可以解决====>只有List接口有
         *      可以完成增删改查的动作
         */

        //迭代器方法
        // Iterator it = list.iterator();
        //列表迭代器方法
        ListIterator it= list.listIterator(1);
        while(it.hasNext()){
            Object obj = it.next();
            if("7174".equals(obj)){
                //使用了集合的方法，导致出现ConcurrentModificationException错误
                //list.add("44444");
                //使用迭代器方法
                it.add("4444");
            }
        }
        System.out.println(list);
    }
}
